/*   1:    */ package org.intellij.lang.regexp;
/*   2:    */ 
/*   3:    */

import com.intellij.lexer.FlexLexer;
import com.intellij.psi.StringEscapesTokenTypes;
import com.intellij.psi.TokenType;
import com.intellij.psi.tree.IElementType;
import com.intellij.util.text.CharArrayUtil;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.EnumSet;
import java.util.LinkedList;

/*   4:    */
/*   5:    */
/*   6:    */
/*   7:    */
/*   8:    */
/*   9:    */
/*  10:    */
/*  11:    */
/*  12:    */
/*  13:    */
/*  14:    */ 
/*  15:    */ class _RegExLexer
/*  16:    */   implements FlexLexer
/*  17:    */ {
/*  18:    */   private static final int a = 16384;
/*  19:    */   public static final int EMBRACED = 4;
/*  20:    */   public static final int CLASS1PY = 8;
/*  21:    */   public static final int PY_NAMED_GROUP_REF = 22;
/*  22:    */   public static final int QUOTED = 2;
/*  23:    */   public static final int OPTIONS = 14;
/*  24:    */   public static final int PY_COND_REF = 24;
/*  25:    */   public static final int YYINITIAL = 0;
/*  26:    */   public static final int NAMED_GROUP = 18;
/*  27:    */   public static final int CLASS2 = 10;
/*  28:    */   public static final int CLASS1 = 6;
/*  29:    */   public static final int COMMENT = 16;
/*  30:    */   public static final int QUOTED_NAMED_GROUP = 20;
/*  31:    */   public static final int PROP = 12;
/*  32: 46 */   private static final int[] b = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12 };
/*  33:    */   private static final String c = "";
/*  34:126 */   private static final char[] d = a("");
/*  35:131 */   private static final int[] e = a();
/*  36:    */   private static final String f = "";
/*  37:    */   
/*  38:    */   private static int[] a()
/*  39:    */   {
/*  40:149 */     int[] arrayOfInt = new int[112];
/*  41:150 */     int i1 = 0;
/*  42:151 */     i1 = a("", i1, arrayOfInt);
/*  43:152 */     return arrayOfInt;
/*  44:    */   }
/*  45:    */   
/*  46:    */   private static int a(String paramString, int paramInt, int[] paramArrayOfInt)
/*  47:    */   {
/*  48:156 */     int i1 = 0;
/*  49:157 */     int i2 = paramInt;
/*  50:158 */     int i3 = paramString.length();
/*  51:    */     int i4;
/*  52:159 */     for (; i1 < i3; i4 > 0)
/*  53:    */     {
/*  54:160 */       i4 = paramString.charAt(i1++);
/*  55:161 */       int i5 = paramString.charAt(i1++);
/*  56:162 */       paramArrayOfInt[(i2++)] = i5;i4--;
/*  57:    */     }
/*  58:164 */     return i2;
/*  59:    */   }
/*  60:    */   
/*  61:171 */   private static final int[] g = b();
/*  62:    */   private static final String h = "";
/*  63:    */   
/*  64:    */   private static int[] b()
/*  65:    */   {
/*  66:190 */     int[] arrayOfInt = new int[112];
/*  67:191 */     int i1 = 0;
/*  68:192 */     i1 = b("", i1, arrayOfInt);
/*  69:193 */     return arrayOfInt;
/*  70:    */   }
/*  71:    */   
/*  72:    */   private static int b(String paramString, int paramInt, int[] paramArrayOfInt)
/*  73:    */   {
/*  74:197 */     int i1 = 0;
/*  75:198 */     int i2 = paramInt;
/*  76:199 */     int i3 = paramString.length();
/*  77:200 */     while (i1 < i3)
/*  78:    */     {
/*  79:201 */       int i4 = paramString.charAt(i1++) << '\020';
/*  80:202 */       paramArrayOfInt[(i2++)] = (i4 | paramString.charAt(i1++));
/*  81:    */     }
/*  82:204 */     return i2;
/*  83:    */   }
/*  84:    */   
/*  85:210 */   private static final int[] i = c();
/*  86:    */   private static final String j = "";
/*  87:    */   private static final int k = 0;
/*  88:    */   private static final int l = 1;
/*  89:    */   private static final int m = 2;
/*  90:    */   
/*  91:    */   private static int[] c()
/*  92:    */   {
/*  93:259 */     int[] arrayOfInt = new int[2496];
/*  94:260 */     int i1 = 0;
/*  95:261 */     i1 = c("", i1, arrayOfInt);
/*  96:262 */     return arrayOfInt;
/*  97:    */   }
/*  98:    */   
/*  99:    */   private static int c(String paramString, int paramInt, int[] paramArrayOfInt)
/* 100:    */   {
/* 101:266 */     int i1 = 0;
/* 102:267 */     int i2 = paramInt;
/* 103:268 */     int i3 = paramString.length();
/* 104:    */     int i4;
/* 105:269 */     for (; i1 < i3; i4 > 0)
/* 106:    */     {
/* 107:270 */       i4 = paramString.charAt(i1++);
/* 108:271 */       int i5 = paramString.charAt(i1++);
/* 109:272 */       i5--;
/* 110:273 */       paramArrayOfInt[(i2++)] = i5;i4--;
/* 111:    */     }
/* 112:275 */     return i2;
/* 113:    */   }
/* 114:    */   
/* 115:283 */   private static final char[] n = new char[0];
/* 116:    */   private static final int o = -1;
/* 117:285 */   private static Reader p = null;
/* 118:288 */   private static final String[] q = { "Unkown internal scanner error", "Error: could not match input", "Error: pushback value was too large" };
/* 119:297 */   private static final int[] r = d();
/* 120:    */   private static final String s = "";
/* 121:    */   private int t;
/* 122:    */   
/* 123:    */   private static int[] d()
/* 124:    */   {
/* 125:309 */     int[] arrayOfInt = new int[112];
/* 126:310 */     int i1 = 0;
/* 127:311 */     i1 = d("", i1, arrayOfInt);
/* 128:312 */     return arrayOfInt;
/* 129:    */   }
/* 130:    */   
/* 131:    */   private static int d(String paramString, int paramInt, int[] paramArrayOfInt)
/* 132:    */   {
/* 133:316 */     int i1 = 0;
/* 134:317 */     int i2 = paramInt;
/* 135:318 */     int i3 = paramString.length();
/* 136:    */     int i4;
/* 137:319 */     for (; i1 < i3; i4 > 0)
/* 138:    */     {
/* 139:320 */       i4 = paramString.charAt(i1++);
/* 140:321 */       int i5 = paramString.charAt(i1++);
/* 141:322 */       paramArrayOfInt[(i2++)] = i5;i4--;
/* 142:    */     }
/* 143:324 */     return i2;
/* 144:    */   }
/* 145:    */   
/* 146:331 */   private int u = 0;
/* 147:335 */   private CharSequence v = "";
/* 148:    */   private char[] w;
/* 149:    */   private int x;
/* 150:    */   private int y;
/* 151:    */   private int z;
/* 152:    */   private int A;
/* 153:    */   private int B;
/* 154:359 */   private boolean C = true;
/* 155:    */   private boolean D;
/* 156:    */   private boolean E;
/* 157:369 */   private final LinkedList<Integer> F = new LinkedList();
/* 158:    */   private boolean G;
/* 159:    */   private boolean H;
/* 160:    */   private boolean I;
/* 161:    */   private boolean J;
/* 162:    */   private boolean K;
/* 163:    */   
/* 164:    */   _RegExLexer(EnumSet<RegExpCapability> paramEnumSet)
/* 165:    */   {
/* 166:382 */     this((Reader)null);
/* 167:383 */     this.G = paramEnumSet.contains(RegExpCapability.XML_SCHEMA_MODE);
/* 168:384 */     this.H = paramEnumSet.contains(RegExpCapability.DANGLING_METACHARACTERS);
/* 169:385 */     this.I = paramEnumSet.contains(RegExpCapability.NESTED_CHARACTER_CLASSES);
/* 170:386 */     this.J = paramEnumSet.contains(RegExpCapability.OCTAL_NO_LEADING_ZERO);
/* 171:387 */     this.commentMode = paramEnumSet.contains(RegExpCapability.COMMENT_MODE);
/* 172:388 */     this.K = paramEnumSet.contains(RegExpCapability.ALLOW_HEX_DIGIT_CLASS);
/* 173:    */   }
/* 174:    */   
/* 175:    */   private void a(int paramInt)
/* 176:    */   {
/* 177:392 */     this.F.addFirst(Integer.valueOf(yystate()));
/* 178:393 */     yybegin(paramInt);
/* 179:    */   }
/* 180:    */   
/* 181:    */   private void e()
/* 182:    */   {
/* 183:396 */     int i1 = ((Integer)this.F.removeFirst()).intValue();
/* 184:397 */     yybegin(i1);
/* 185:    */   }
/* 186:    */   
/* 187:    */   private void f()
/* 188:    */   {
/* 189:401 */     String str = yytext().toString();
/* 190:402 */     if (str.contains("x")) {
/* 191:403 */       this.commentMode = (!str.startsWith("-"));
/* 192:    */     }
/* 193:    */   }
/* 194:    */   
/* 195:409 */   boolean commentMode = false;
/* 196:    */   
/* 197:    */   _RegExLexer(Reader paramReader)
/* 198:    */   {
/* 199:413 */     p = paramReader;
/* 200:    */   }
/* 201:    */   
/* 202:    */   _RegExLexer(InputStream paramInputStream)
/* 203:    */   {
/* 204:423 */     this(new InputStreamReader(paramInputStream));
/* 205:    */   }
/* 206:    */   
/* 207:    */   private static char[] a(String paramString)
/* 208:    */   {
/* 209:433 */     char[] arrayOfChar = new char[65536];
/* 210:434 */     int i1 = 0;
/* 211:435 */     int i2 = 0;
/* 212:    */     int i3;
/* 213:436 */     for (; i1 < 1338; i3 > 0)
/* 214:    */     {
/* 215:437 */       i3 = paramString.charAt(i1++);
/* 216:438 */       int i4 = paramString.charAt(i1++);
/* 217:439 */       arrayOfChar[(i2++)] = i4;i3--;
/* 218:    */     }
/* 219:441 */     return arrayOfChar;
/* 220:    */   }
/* 221:    */   
/* 222:    */   public final int getTokenStart()
/* 223:    */   {
/* 224:445 */     return this.A;
/* 225:    */   }
/* 226:    */   
/* 227:    */   public final int getTokenEnd()
/* 228:    */   {
/* 229:449 */     return getTokenStart() + yylength();
/* 230:    */   }
/* 231:    */   
/* 232:    */   public void reset(CharSequence paramCharSequence, int paramInt1, int paramInt2, int paramInt3)
/* 233:    */   {
/* 234:453 */     this.v = paramCharSequence;
/* 235:454 */     this.w = CharArrayUtil.fromSequenceWithoutCopying(paramCharSequence);
/* 236:455 */     this.z = (this.x = this.A = paramInt1);
/* 237:456 */     this.y = 0;
/* 238:457 */     this.D = false;
/* 239:458 */     this.C = true;
/* 240:459 */     this.B = paramInt2;
/* 241:460 */     yybegin(paramInt3);
/* 242:    */   }
/* 243:    */   
/* 244:    */   private boolean g()
/* 245:    */     throws IOException
/* 246:    */   {
/* 247:471 */     return true;
/* 248:    */   }
/* 249:    */   
/* 250:    */   public final int yystate()
/* 251:    */   {
/* 252:479 */     return this.u;
/* 253:    */   }
/* 254:    */   
/* 255:    */   public final void yybegin(int paramInt)
/* 256:    */   {
/* 257:489 */     this.u = paramInt;
/* 258:    */   }
/* 259:    */   
/* 260:    */   public final CharSequence yytext()
/* 261:    */   {
/* 262:497 */     return this.v.subSequence(this.A, this.x);
/* 263:    */   }
/* 264:    */   
/* 265:    */   public final char yycharat(int paramInt)
/* 266:    */   {
/* 267:513 */     return this.w != null ? this.w[(this.A + paramInt)] : this.v.charAt(this.A + paramInt);
/* 268:    */   }
/* 269:    */   
/* 270:    */   public final int yylength()
/* 271:    */   {
/* 272:521 */     return this.x - this.A;
/* 273:    */   }
/* 274:    */   
/* 275:    */   private void b(int paramInt)
/* 276:    */   {
/* 277:    */     String str;
/* 278:    */     try
/* 279:    */     {
/* 280:542 */       str = q[paramInt];
/* 281:    */     }
/* 282:    */     catch (ArrayIndexOutOfBoundsException localArrayIndexOutOfBoundsException)
/* 283:    */     {
/* 284:545 */       str = q[0];
/* 285:    */     }
/* 286:548 */     throw new Error(str);
/* 287:    */   }
/* 288:    */   
/* 289:    */   public void yypushback(int paramInt)
/* 290:    */   {
/* 291:561 */     if (paramInt > yylength()) {
/* 292:562 */       b(2);
/* 293:    */     }
/* 294:564 */     this.x -= paramInt;
/* 295:    */   }
/* 296:    */   
/* 297:    */   private void h()
/* 298:    */   {
/* 299:573 */     if (!this.E) {
/* 300:574 */       this.E = true;
/* 301:    */     }
/* 302:    */   }
/* 303:    */   
/* 304:    */   public IElementType advance()
/* 305:    */     throws IOException
/* 306:    */   {
/* 307:594 */     int i5 = this.B;
/* 308:595 */     CharSequence localCharSequence = this.v;
/* 309:596 */     char[] arrayOfChar1 = this.w;
/* 310:597 */     char[] arrayOfChar2 = d;
/* 311:    */     
/* 312:599 */     int[] arrayOfInt1 = i;
/* 313:600 */     int[] arrayOfInt2 = g;
/* 314:601 */     int[] arrayOfInt3 = r;
/* 315:    */     for (;;)
/* 316:    */     {
/* 317:604 */       int i4 = this.x;
/* 318:    */       
/* 319:606 */       int i2 = -1;
/* 320:    */       
/* 321:608 */       int i3 = this.z = this.A = i4;
/* 322:    */       
/* 323:610 */       this.t = b[this.u];
/* 324:    */       int i1;
/* 325:    */       for (;;)
/* 326:    */       {
/* 327:616 */         if (i3 < i5)
/* 328:    */         {
/* 329:617 */           i1 = arrayOfChar1 != null ? arrayOfChar1[(i3++)] : localCharSequence.charAt(i3++);
/* 330:    */         }
/* 331:    */         else
/* 332:    */         {
/* 333:618 */           if (this.D)
/* 334:    */           {
/* 335:619 */             i1 = -1;
/* 336:620 */             break;
/* 337:    */           }
/* 338:624 */           this.z = i3;
/* 339:625 */           this.x = i4;
/* 340:626 */           boolean bool = g();
/* 341:    */           
/* 342:628 */           i3 = this.z;
/* 343:629 */           i4 = this.x;
/* 344:630 */           localCharSequence = this.v;
/* 345:631 */           i5 = this.B;
/* 346:632 */           if (bool)
/* 347:    */           {
/* 348:633 */             i1 = -1;
/* 349:634 */             break;
/* 350:    */           }
/* 351:637 */           i1 = arrayOfChar1 != null ? arrayOfChar1[(i3++)] : localCharSequence.charAt(i3++);
/* 352:    */         }
/* 353:640 */         int i6 = arrayOfInt1[(arrayOfInt2[this.t] + arrayOfChar2[i1])];
/* 354:641 */         if (i6 == -1) {
/* 355:    */           break;
/* 356:    */         }
/* 357:642 */         this.t = i6;
/* 358:    */         
/* 359:644 */         int i7 = arrayOfInt3[this.t];
/* 360:645 */         if ((i7 & 0x1) == 1)
/* 361:    */         {
/* 362:646 */           i2 = this.t;
/* 363:647 */           i4 = i3;
/* 364:648 */           if ((i7 & 0x8) == 8) {
/* 365:    */             break;
/* 366:    */           }
/* 367:    */         }
/* 368:    */       }
/* 369:655 */       this.x = i4;
/* 370:657 */       switch (i2 < 0 ? i2 : e[i2])
/* 371:    */       {
/* 372:    */       case 75: 
/* 373:659 */         return RegExpTT.UNICODE_CHAR;
/* 374:    */       case 76: 
/* 375:    */         break;
/* 376:    */       case 7: 
/* 377:663 */         if (yystate() != 10) {
/* 378:663 */           a(4);
/* 379:    */         }
/* 380:663 */         return RegExpTT.LBRACE;
/* 381:    */       case 77: 
/* 382:    */         break;
/* 383:    */       case 24: 
/* 384:667 */         return RegExpTT.COMMA;
/* 385:    */       case 78: 
/* 386:    */         break;
/* 387:    */       case 61: 
/* 388:671 */         return RegExpTT.POS_LOOKAHEAD;
/* 389:    */       case 79: 
/* 390:    */         break;
/* 391:    */       case 74: 
/* 392:675 */         return RegExpTT.COMMENT;
/* 393:    */       case 80: 
/* 394:    */         break;
/* 395:    */       case 69: 
/* 396:679 */         yybegin(18);return RegExpTT.PYTHON_NAMED_GROUP;
/* 397:    */       case 81: 
/* 398:    */         break;
/* 399:    */       case 14: 
/* 400:683 */         return RegExpTT.STAR;
/* 401:    */       case 82: 
/* 402:    */         break;
/* 403:    */       case 28: 
/* 404:687 */         if (this.I)
/* 405:    */         {
/* 406:688 */           a(10);
/* 407:689 */           return RegExpTT.CLASS_BEGIN;
/* 408:    */         }
/* 409:691 */         return RegExpTT.CHARACTER;
/* 410:    */       case 83: 
/* 411:    */         break;
/* 412:    */       case 59: 
/* 413:695 */         yybegin(24);return RegExpTT.PYTHON_COND_REF;
/* 414:    */       case 84: 
/* 415:    */         break;
/* 416:    */       case 48: 
/* 417:699 */         return RegExpTT.CHAR_CLASS;
/* 418:    */       case 85: 
/* 419:    */         break;
/* 420:    */       case 35: 
/* 421:703 */         f();return RegExpTT.OPTIONS_OFF;
/* 422:    */       case 86: 
/* 423:    */         break;
/* 424:    */       case 40: 
/* 425:708 */         this.x = (this.A + 1);
/* 426:709 */         a(6);
/* 427:710 */         return RegExpTT.CLASS_BEGIN;
/* 428:    */       case 87: 
/* 429:    */         break;
/* 430:    */       case 55: 
/* 431:714 */         e();return RegExpTT.QUOTE_END;
/* 432:    */       case 88: 
/* 433:    */         break;
/* 434:    */       case 34: 
/* 435:718 */         yybegin(0);return RegExpTT.GROUP_END;
/* 436:    */       case 89: 
/* 437:    */         break;
/* 438:    */       case 5: 
/* 439:722 */         return RegExpTT.GROUP_BEGIN;
/* 440:    */       case 90: 
/* 441:    */         break;
/* 442:    */       case 36: 
/* 443:726 */         yybegin(0);return RegExpTT.COLON;
/* 444:    */       case 91: 
/* 445:    */         break;
/* 446:    */       case 6: 
/* 447:730 */         return RegExpTT.GROUP_END;
/* 448:    */       case 92: 
/* 449:    */         break;
/* 450:    */       case 25: 
/* 451:734 */         if (!$assertionsDisabled) {
/* 452:734 */           throw new AssertionError(yytext());
/* 453:    */         }
/* 454:    */       case 93: 
/* 455:    */         break;
/* 456:    */       case 18: 
/* 457:738 */         return this.commentMode ? TokenType.WHITE_SPACE : RegExpTT.CHARACTER;
/* 458:    */       case 94: 
/* 459:    */         break;
/* 460:    */       case 45: 
/* 461:742 */         return this.commentMode ? RegExpTT.CHARACTER : RegExpTT.REDUNDANT_ESCAPE;
/* 462:    */       case 95: 
/* 463:    */         break;
/* 464:    */       case 23: 
/* 465:746 */         return RegExpTT.NAME;
/* 466:    */       case 96: 
/* 467:    */         break;
/* 468:    */       case 29: 
/* 469:750 */         e();return RegExpTT.CLASS_END;
/* 470:    */       case 97: 
/* 471:    */         break;
/* 472:    */       case 33: 
/* 473:754 */         yybegin(0);return RegExpTT.BAD_CHARACTER;
/* 474:    */       case 98: 
/* 475:    */         break;
/* 476:    */       case 51: 
/* 477:758 */         a(2);return RegExpTT.QUOTE_BEGIN;
/* 478:    */       case 99: 
/* 479:    */         break;
/* 480:    */       case 21: 
/* 481:762 */         return RegExpTT.NUMBER;
/* 482:    */       case 100: 
/* 483:    */         break;
/* 484:    */       case 4: 
/* 485:766 */         return RegExpTT.DOT;
/* 486:    */       case 101: 
/* 487:    */         break;
/* 488:    */       case 71: 
/* 489:770 */         return RegExpTT.NEG_LOOKBEHIND;
/* 490:    */       case 102: 
/* 491:    */         break;
/* 492:    */       case 43: 
/* 493:774 */         return this.J ? RegExpTT.OCT_CHAR : RegExpTT.BAD_OCT_VALUE;
/* 494:    */       case 103: 
/* 495:    */         break;
/* 496:    */       case 62: 
/* 497:778 */         return RegExpTT.NEG_LOOKAHEAD;
/* 498:    */       case 104: 
/* 499:    */         break;
/* 500:    */       case 10: 
/* 501:782 */         return this.commentMode ? TokenType.WHITE_SPACE : RegExpTT.CTRL_CHARACTER;
/* 502:    */       case 105: 
/* 503:    */         break;
/* 504:    */       case 60: 
/* 505:786 */         return RegExpTT.NON_CAPT_GROUP;
/* 506:    */       case 106: 
/* 507:    */         break;
/* 508:    */       case 64: 
/* 509:790 */         yybegin(20);return RegExpTT.RUBY_QUOTED_NAMED_GROUP;
/* 510:    */       case 107: 
/* 511:    */         break;
/* 512:    */       case 19: 
/* 513:794 */         if (this.commentMode)
/* 514:    */         {
/* 515:794 */           a(16);return RegExpTT.COMMENT;
/* 516:    */         }
/* 517:794 */         return RegExpTT.CHARACTER;
/* 518:    */       case 108: 
/* 519:    */         break;
/* 520:    */       case 50: 
/* 521:798 */         a(12);return RegExpTT.PROPERTY;
/* 522:    */       case 109: 
/* 523:    */         break;
/* 524:    */       case 70: 
/* 525:802 */         return RegExpTT.POS_LOOKBEHIND;
/* 526:    */       case 110: 
/* 527:    */         break;
/* 528:    */       case 42: 
/* 529:806 */         return yystate() != 10 ? RegExpTT.BACKREF : RegExpTT.ESC_CHARACTER;
/* 530:    */       case 111: 
/* 531:    */         break;
/* 532:    */       case 72: 
/* 533:810 */         return RegExpTT.HEX_CHAR;
/* 534:    */       case 112: 
/* 535:    */         break;
/* 536:    */       case 1: 
/* 537:814 */         f();return RegExpTT.OPTIONS_ON;
/* 538:    */       case 113: 
/* 539:    */         break;
/* 540:    */       case 58: 
/* 541:818 */         return this.I ? RegExpTT.ANDAND : RegExpTT.CHARACTER;
/* 542:    */       case 114: 
/* 543:    */         break;
/* 544:    */       case 2: 
/* 545:822 */         e();return RegExpTT.COMMENT;
/* 546:    */       case 115: 
/* 547:    */         break;
/* 548:    */       case 17: 
/* 549:826 */         return RegExpTT.MINUS;
/* 550:    */       case 116: 
/* 551:    */         break;
/* 552:    */       case 46: 
/* 553:830 */         return RegExpTT.ESC_CTRL_CHARACTER;
/* 554:    */       case 117: 
/* 555:    */         break;
/* 556:    */       case 32: 
/* 557:834 */         e();a(4);return RegExpTT.LBRACE;
/* 558:    */       case 118: 
/* 559:    */         break;
/* 560:    */       case 57: 
/* 561:838 */         if (!this.I) {
/* 562:838 */           return RegExpTT.CHARACTER;
/* 563:    */         }
/* 564:839 */         return RegExpTT.REDUNDANT_ESCAPE;
/* 565:    */       case 119: 
/* 566:    */         break;
/* 567:    */       case 13: 
/* 568:843 */         return RegExpTT.QUEST;
/* 569:    */       case 120: 
/* 570:    */         break;
/* 571:    */       case 20: 
/* 572:847 */         if (this.H)
/* 573:    */         {
/* 574:848 */           e();yypushback(1);
/* 575:    */         }
/* 576:    */         else
/* 577:    */         {
/* 578:850 */           return RegExpTT.BAD_CHARACTER;
/* 579:    */         }
/* 580:    */       case 121: 
/* 581:    */         break;
/* 582:    */       case 54: 
/* 583:855 */         return this.K ? RegExpTT.CHAR_CLASS : StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
/* 584:    */       case 122: 
/* 585:    */         break;
/* 586:    */       case 15: 
/* 587:859 */         return RegExpTT.PLUS;
/* 588:    */       case 123: 
/* 589:    */         break;
/* 590:    */       case 66: 
/* 591:863 */         return RegExpTT.OCT_CHAR;
/* 592:    */       case 124: 
/* 593:    */         break;
/* 594:    */       case 73: 
/* 595:867 */         if (this.J) {
/* 596:867 */           return RegExpTT.OCT_CHAR;
/* 597:    */         }
/* 598:868 */         return yystate() != 10 ? RegExpTT.BACKREF : RegExpTT.ESC_CHARACTER;
/* 599:    */       case 125: 
/* 600:    */         break;
/* 601:    */       case 38: 
/* 602:872 */         yybegin(0);return RegExpTT.QUOTE;
/* 603:    */       case 126: 
/* 604:    */         break;
/* 605:    */       case 31: 
/* 606:876 */         e();yypushback(1);
/* 607:    */       case 127: 
/* 608:    */         break;
/* 609:    */       case 27: 
/* 610:880 */         yybegin(6);return RegExpTT.CARET;
/* 611:    */       case 128: 
/* 612:    */         break;
/* 613:    */       case 37: 
/* 614:884 */         yybegin(0);return RegExpTT.GT;
/* 615:    */       case 129: 
/* 616:    */         break;
/* 617:    */       case 68: 
/* 618:888 */         yybegin(22);return RegExpTT.PYTHON_NAMED_GROUP_REF;
/* 619:    */       case 130: 
/* 620:    */         break;
/* 621:    */       case 16: 
/* 622:892 */         return RegExpTT.UNION;
/* 623:    */       case 131: 
/* 624:    */         break;
/* 625:    */       case 3: 
/* 626:896 */         return RegExpTT.CHARACTER;
/* 627:    */       case 132: 
/* 628:    */         break;
/* 629:    */       case 63: 
/* 630:900 */         yybegin(18);return RegExpTT.RUBY_NAMED_GROUP;
/* 631:    */       case 133: 
/* 632:    */         break;
/* 633:    */       case 39: 
/* 634:904 */         yybegin(14);return RegExpTT.SET_OPTIONS;
/* 635:    */       case 134: 
/* 636:    */         break;
/* 637:    */       case 26: 
/* 638:908 */         yybegin(10);return RegExpTT.CHARACTER;
/* 639:    */       case 135: 
/* 640:    */         break;
/* 641:    */       case 67: 
/* 642:912 */         if (this.G)
/* 643:    */         {
/* 644:912 */           yypushback(1);return RegExpTT.CHAR_CLASS;
/* 645:    */         }
/* 646:912 */         return RegExpTT.CTRL;
/* 647:    */       case 136: 
/* 648:    */         break;
/* 649:    */       case 30: 
/* 650:916 */         return this.commentMode ? TokenType.WHITE_SPACE : RegExpTT.ESC_CHARACTER;
/* 651:    */       case 137: 
/* 652:    */         break;
/* 653:    */       case 12: 
/* 654:920 */         return RegExpTT.DOLLAR;
/* 655:    */       case 138: 
/* 656:    */         break;
/* 657:    */       case 49: 
/* 658:924 */         if (this.G) {
/* 659:924 */           return RegExpTT.CHAR_CLASS;
/* 660:    */         }
/* 661:924 */         return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
/* 662:    */       case 139: 
/* 663:    */         break;
/* 664:    */       case 41: 
/* 665:928 */         return RegExpTT.REDUNDANT_ESCAPE;
/* 666:    */       case 140: 
/* 667:    */         break;
/* 668:    */       case 47: 
/* 669:932 */         return yystate() != 10 ? RegExpTT.BOUNDARY : RegExpTT.ESC_CHARACTER;
/* 670:    */       case 141: 
/* 671:    */         break;
/* 672:    */       case 8: 
/* 673:936 */         a(10);
/* 674:937 */         return RegExpTT.CLASS_BEGIN;
/* 675:    */       case 142: 
/* 676:    */         break;
/* 677:    */       case 22: 
/* 678:941 */         e();return RegExpTT.RBRACE;
/* 679:    */       case 143: 
/* 680:    */         break;
/* 681:    */       case 53: 
/* 682:945 */         return StringEscapesTokenTypes.INVALID_UNICODE_ESCAPE_TOKEN;
/* 683:    */       case 144: 
/* 684:    */         break;
/* 685:    */       case 52: 
/* 686:949 */         return RegExpTT.BAD_HEX_VALUE;
/* 687:    */       case 145: 
/* 688:    */         break;
/* 689:    */       case 9: 
/* 690:953 */         return StringEscapesTokenTypes.INVALID_CHARACTER_ESCAPE_TOKEN;
/* 691:    */       case 146: 
/* 692:    */         break;
/* 693:    */       case 11: 
/* 694:957 */         return RegExpTT.CARET;
/* 695:    */       case 147: 
/* 696:    */         break;
/* 697:    */       case 44: 
/* 698:961 */         return RegExpTT.ESC_CHARACTER;
/* 699:    */       case 148: 
/* 700:    */         break;
/* 701:    */       case 56: 
/* 702:966 */         this.x = (this.A + 1);
/* 703:967 */         if (this.I)
/* 704:    */         {
/* 705:968 */           a(6);
/* 706:969 */           return RegExpTT.CLASS_BEGIN;
/* 707:    */         }
/* 708:971 */         return RegExpTT.CHARACTER;
/* 709:    */       case 149: 
/* 710:    */         break;
/* 711:    */       case 65: 
/* 712:976 */         this.x = (this.A + 1);
/* 713:977 */         if (!this.I) {
/* 714:978 */           a(8);
/* 715:    */         } else {
/* 716:981 */           a(10);
/* 717:    */         }
/* 718:983 */         return RegExpTT.CLASS_BEGIN;
/* 719:    */       case 150: 
/* 720:    */         break;
/* 721:    */       default: 
/* 722:987 */         if ((i1 == -1) && (this.A == this.z))
/* 723:    */         {
/* 724:988 */           this.D = true;
/* 725:989 */           h();
/* 726:990 */           return null;
/* 727:    */         }
/* 728:993 */         b(1);
/* 729:    */       }
/* 730:    */     }
/* 731:    */   }
/* 732:    */ }



/* Location:           E:\idea\

 * Qualified Name:     org.intellij.lang.regexp._RegExLexer

 * JD-Core Version:    0.7.0.1

 */